package org.dromara.vehicle.modules.geoFence.domain.vo;

import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.vehicle.modules.geoFence.domain.GeoFence;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 地理围栏视图对象 geo_fence
 *
 * @author ckk
 * @date 2025-07-08
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = GeoFence.class)
public class GeoFenceVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private Long id;

    /**
     * 围栏名称
     */
    @ExcelProperty(value = "围栏名称")
    private String name;

    /**
     * 围栏类型 (1: 圆形围栏, 2: 多边形围栏, 3: 线形围栏, 4: 行政区划围栏)
     */
    @ExcelProperty(value = "围栏类型 (1: 圆形围栏, 2: 多边形围栏, 3: 线形围栏, 4: 行政区划围栏)", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "wllx")
    private Integer type;

    /**
     * 围栏类型
     */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "type", other = "wllx")
    private String typeLabel;

    /**
     * 状态(0: 禁用, 1: 启用)
     */
    @ExcelProperty(value = "状态(0: 禁用, 1: 启用)")
    private Integer status;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 描述
     */
    @ExcelProperty(value = "描述")
    private String remark;

    /**
     * 圆形围栏中心点坐标(格式X,Y)
     */
    @ExcelProperty(value = "圆形围栏中心点坐标(格式X,Y)")
    private String center;

    /**
     * 圆形围栏半径(米)
     */
    @ExcelProperty(value = "圆形围栏半径(米)")
    private Integer radius;

    /**
     * 多边形/线形围栏顶点坐标(格式 X1,Y1;X2,Y2;)
     */
    @ExcelProperty(value = "多边形/线形围栏顶点坐标(格式 X1,Y1;X2,Y2;)")
    private String points;

    /**
     * 线形围栏沿线偏移距离(米)
     */
    @ExcelProperty(value = "线形围栏沿线偏移距离(米)")
    private String bufferradius;

    /**
     * 行政区划围行政区划编码
     */
    @ExcelProperty(value = "行政区划围行政区划编码")
    private String adcode;

}
